/**
 * 组件统一导出文件
 * @description 提供所有组件的统一导入入口，包含完整的类型定义和使用说明
 * @author AI Assistant
 * @date 2025-08-18
 */

// ================================
// 基础组件导出
// ================================

/**
 * 头部组件
 * @description 通用页面头部组件，支持自定义标题、返回按钮、背景色等
 * @example
 * ```vue
 * <Header
 *   title="页面标题"
 *   :leftShow="true"
 *   backgroundColor="#fff"
 *   @goback="handleGoBack"
 * />
 * ```
 */
export { default as Header } from './header/header.vue'

/**
 * 空状态组件
 * @description 用于显示空数据状态，支持自定义图片和文案
 * @example
 * ```vue
 * <Empty
 *   tips="暂无数据"
 *   :imgShow="true"
 *   :height="60"
 * />
 * ```
 */
export { default as Empty } from './empty/empty.vue'

/**
 * 自定义图片组件
 * @description 增强的图片组件，支持懒加载、错误处理、预览等功能
 * @example
 * ```vue
 * <CustomImage
 *   :src="imageUrl"
 *   width="200rpx"
 *   height="200rpx"
 *   :lazyLoad="true"
 *   :preview="true"
 *   :fadeShow="true"
 * />
 * ```
 */
export { default as CustomImage } from './image/image.vue'

/**
 * 列表组件
 * @description 通用列表组件，支持下拉刷新、上拉加载、空状态等
 * @example
 * ```vue
 * <List
 *   :data="listData"
 *   :loading="loading"
 *   :finished="finished"
 *   @refresh="handleRefresh"
 *   @loadMore="handleLoadMore"
 * />
 * ```
 */
export { default as List } from './list/list.vue'

// ================================
// 性能优化组件导出
// ================================

/**
 * 虚拟列表组件
 * @description 高性能虚拟滚动列表，适用于大量数据展示
 * @example
 * ```vue
 * <VirtualList
 *   :data="bigData"
 *   :itemHeight="60"
 *   :containerHeight="400"
 *   :overscan="5"
 * />
 * ```
 */
export { default as VirtualList } from './virtual-list/virtual-list.vue'

// ================================
// 业务组件导出
// ================================

/**
 * 登录表单组件
 * @description 通用登录表单，支持登录、注册、重置密码模式
 * @example
 * ```vue
 * <LoginForm
 *   mode="login"
 *   @submit="handleSubmit"
 *   @switchMode="handleSwitchMode"
 * />
 * ```
 */
export { default as LoginForm } from './login/login.vue'

// ================================
// 组件类型导出
// ================================

/**
 * 头部组件实例类型
 */
export type { default as HeaderInstance } from './header/header.vue'

/**
 * 列表组件实例类型
 */
export type { default as ListInstance } from './list/list.vue'

/**
 * 登录表单组件实例类型
 */
export type { default as LoginFormInstance } from './login/login.vue'

/**
 * 虚拟列表组件实例类型
 */
export type { default as VirtualListInstance } from './virtual-list/virtual-list.vue'

/**
 * 自定义图片组件实例类型
 */
export type { default as CustomImageInstance } from './image/image.vue'

/**
 * 空状态组件实例类型
 */
export type { default as EmptyInstance } from './empty/empty.vue'

// ================================
// 组件属性类型导出
// ================================

// 从统一类型文件导入并重新导出
export type { HeaderProps, ImageProps, ListProps, EmptyProps, VirtualListProps } from '@/types'

// ================================
// 组件使用指南
// ================================

/**
 * 组件使用指南
 *
 * 1. 基础组件 (Header, Empty, CustomImage, List)
 *    - 适用于大部分常见场景
 *    - 提供丰富的配置选项
 *    - 支持主题定制
 *
 * 2. 性能优化组件 (VirtualList)
 *    - 适用于大数据量场景
 *    - 自动优化渲染性能
 *    - 减少内存占用
 *
 * 3. 业务组件 (LoginForm)
 *    - 封装常见业务逻辑
 *    - 提供统一的交互体验
 *    - 支持多种模式切换
 *
 * 4. 使用建议
 *    - 优先使用统一组件库
 *    - 遵循组件设计规范
 *    - 合理使用性能优化组件
 *    - 保持组件API的一致性
 */

// ================================
// 组件注册助手
// ================================

/**
 * 全局注册所有组件
 * @param app Vue应用实例
 * @example
 * ```ts
 * import { createApp } from 'vue'
 * import { registerGlobalComponents } from '@/components'
 *
 * const app = createApp(App)
 * registerGlobalComponents(app)
 * ```
 */
export const registerGlobalComponents = (_app: any) => {
    // 这里可以根据需要注册全局组件
    // app.component('Header', Header)
    // app.component('Empty', Empty)
    // 等等...

    console.log('Global components registration is available but not implemented by default')
    console.log('Please register components manually or implement this function as needed')
}
